enum Color{
    red, green, blue
}

fn test_match_integers() {
	mut a := 3
	mut b := 0
	match a {
	    2 { println('two') }
	    3 {
            println('three')
            b = 3
        }
	    4 { println('four') }
	    else { println('???') }
    }
	assert b == 3

    assert match 2 {
        1 { 2 }
        2 { 3 }
        else { 5 }
    } == 3

    assert match 0 {
        1 { 2 }
        2 { 3 }
        else 5
    } == 5

    assert match 1 {
        else { 5 }
    } == 5

    a = 0
    match 2 {
        0 { a = 1 }
        1 { a = 2 }
        else {
            a = 3
            println('a is $a')
        }
    }
    assert a == 3

    a = 0
    match 1 {
        0 { a = 1 }
        1 {
            a = 2
            a = a + 2
            a = a + 2
        }
       else {}
    }
    assert a == 6

    a = 0
    match 1 {
        else {
            a = -2
        }
    }
    assert a == -2
}

fn test_match_enums(){
    mut b := Color.red
    match b{
        .red {
            b = .green
        }
        .green {
            b = .blue
        }
        else {
            println('b is ${b.str()}')
            b = .red
        }
    }
    assert b == .green

    match b{
        .red {
            b = .green
        }
        else {
            println('b is ${b.str()}')
            b = .blue
        }
    }
    assert b == .blue
}
